package com.wooki.pages.chapter;
import java.util.ConcurrentModificationException;
import java.util.List;
import org.apache.tapestry5.EventConstants;
import org.apache.tapestry5.PersistenceConstants;
import org.apache.tapestry5.annotations.OnEvent;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SetupRender;
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;
import com.wooki.base.ChapterBase;
import com.wooki.domain.biz.ChapterManager;
import com.wooki.domain.exception.PublicationXmlException;
import com.wooki.domain.model.Publication;
import com.wooki.links.PageLink;
import com.wooki.links.impl.NavLink;
import com.wooki.services.security.WookiSecurityContext;
public class History extends ChapterBase
{
@Inject
private ChapterManager chapterManager;
@Inject
private WookiSecurityContext securityCtx;
@Inject
private Messages messages;
@Property
@Persist(PersistenceConstants.FLASH)
private String message;
@Property
private List<Publication> publications;
@Property
private Publication publication;
@Property
private PageLink center;
@Property
private int index;
private boolean canWrite;
@SetupRender
public void prepareDisplay()
{
// Get publication
this.publications = chapterManager.listPublicationInfo(getChapter().getId());
canWrite = securityCtx.canWrite(getBook());
}
@SetupRender
public void setupNav()
{
selectPublic(1);
center = new NavLink("book/index", "book-root", getBook().getTitle(), getBookId());
}
@OnEvent(value = "restore")
public void restorePublication(String revision)
{
try
{
chapterManager.restoreRevision(getChapterId(), revision);
message = messages.get("revision-restored");
}
catch (ConcurrentModificationException cmEx)
{
message = messages.get("revision-restore-error");
}
catch (PublicationXmlException pxEx)
{
message = messages.get("revision-restore-error");
}
}
@OnEvent(value = "deleteRevision")
public void deleteRevision(String revision)
{
try
{
chapterManager.deleteRevision(getChapterId(), revision);
message = messages.get("revision-restored");
}
catch (IllegalStateException ex)
{
message = messages.get("revision-delete-error");
}
}
@OnEvent(value = EventConstants.PASSIVATE)
public Object[] retrieveIds()
{
return new Object[]
{ getBookId(), getChapterId() };
}
public boolean isActionsAvailable()
{
return canWrite && index > 0 && !publication.isPublished();
}
}